Deploying 3CX and Provisioning Settings via setupconfig.xml

Introduction

Launch and automatically configure 3CX by creating a pre-populated XML file. Simply input the answers to the questions that the 3CX command-line tool asks you into the XML and store the file either in the host or in cloud-init. 3CX parses it automatically and auto-configures your PBX. It’s also possible to include extensions, SIP Trunks and DIDs during installation.

Overview

The deployment process with setupconfig.xml works by placing the XML file on the machine to automatically configure 3CX during install:

  • Download this sample Setup Template XML file.
  • Modify the configuration in the XML file manually and fill in all required details.
  • Place the setupconfig.xml file on the host machine:
  • For Linux in: /etc/3cxpbx/setupconfig.xml .
  • For Windows in: C:\ProgramData\3CX\Data\setupconfig.xml .
  • Install 3CX. When 3CX is installed, the command line wizard checks the above locations for the XML file and if found, it automatically processes them.

💡 Tip: Instead of copying the file you can also use cloud-init by copying the contents of the XML and pasting them in the Advanced / User data section. Consider this example for Amazon AWS cloud-init.

Example of Cloud-init

To include setupconfig.xml in cloud-init, download and use this cloud-init sample below:  

#!/bin/bash -e

mkdir -p /etc/3cxpbx

cat > /etc/3cxpbx/setupconfig.xml << "<EOF>"

<!--PUT CONTENTS OF SETUPCONFIG.XML HERE-->

<EOF>

apt-get update

dpkg-query -W -f='${Status}' sudo 2>/dev/null | grep -qF "ok installed" || apt-get -y install sudo

dpkg-query -W -f='${Status}' wget 2>/dev/null | grep -qF "ok installed" || apt-get -y install wget

dpkg-query -W -f='${Status}' gnupg2 2>/dev/null | grep -qF "ok installed" || apt-get -y install gnupg2

wget -O- https://repo.3cx.com/key.pub | gpg --dearmor | sudo tee /usr/share/keyrings/3cx-archive-keyring.gpg > /dev/null

echo "deb [arch=$(dpkg --print-architecture) by-hash=yes signed-by=/usr/share/keyrings/3cx-archive-keyring.gpg] http://repo.3cx.com/3cx bookworm main" | sudo tee /etc/apt/sources.list.d/3cxpbx.list

apt-get update

apt-get -y install 3cxpbx

Setupconfig.xml Εxplained

The setupconfig.xml is split in these sections:

  • <tcxinit> - Parameters for the initial phase of the PBX Configuration tool, e.g. license, backup file path, network settings, public IP, FQDN (3CX FQDN or Custom FQDN), hostname, local DNS, HTTP(S) ports, extension length, mail server, timezone, country and license info.
  • <extensions> - Add the extensions to create in this section.
  • <siptrunk> - Define SIP trunks and DIDs to deploy and add a subnode in <inboundrules> to create inbound routing associated with the DID of that SIP trunk.
  • <OutboundRules> - Add outbound rules to create in this section.

Configuring the Wizard

This is an example XML subset that corresponds to the questions asked in the First-time Configuration wizard:  

<option> <code>NumberOfExtensions</code> <answer>3</answer> </option>

<option> <code>MailServerType</code> <answer>3CX</answer> </option>

<option> <code>MailServerAddress</code> <answer>smtp.example.com</answer> </option>

<option> <code>MailServerReplyTo</code> <answer>[email protected]</answer> </option>

<option> <code>MailServerUserName</code> <answer>username</answer> </option>

<option> <code>MailServerPassword</code> <answer>password</answer> </option>

<option> <code>MailServerEnableSslTls</code> <answer>yes</answer> </option>

<option> <code>Continent</code> <answer>North America</answer> </option>

<option> <code>Country</code> <answer>United States</answer> </option>

<option> <code>Timezone</code> <answer>9</answer> </option>

<option> <code>OperatorVoicemail</code> <answer>999</answer> </option>

<option> <code>Promptset</code> <answer>English</answer> </option>

<option> <code>LicenseContactName</code> <answer>John L. Doe</answer> </option>

<option> <code>LicenseCompanyName</code> <answer>My Company Ltd.</answer> </option>

<option> <code>LicenseEmail</code> <answer>[email protected]</answer> </option>

<option> <code>LicensePhone</code> <answer>+357 987654321</answer> </option>

<option> <code>ResellerId</code><answer></answer> </option>

To populate Country and Timezone refer to this document and select values from the appropriate columns. For example, to specify Mexico based on the list you can use this configuration:

<option> <code>Country</code> <answer>Mexico</answer> </option>

<option> <code>Timezone</code> <answer>5</answer> </option>

Adding Extensions, SIP Trunks, DIDs and Outbound Rules

Use the <extensions> section to:

For example, to provision a Snom 720 phone, locate the model in the guide and note the corresponding supported codecs and template file name, i.e. snom.ph.xml. Enter this information in the corresponding XML tags in your setupconfig.xml file.

Creating an Extension

To automatically create and configure a new extension, add the info in an <extension> node under the <extensions> section:

<extension>

   <Number>000</Number>

   <FirstName>John</FirstName>

   <LastName>Smith</LastName>

   <EmailAddress>[email protected]</EmailAddress>

   <MobileNumber>801123456</MobileNumber>

   <OutboundCallerId>801123456</OutboundCallerId>

   <AuthPassword>extensionPassword</AuthPassword>

   <AuthID>000</AuthID>

   <AllowLanOnly>false</AllowLanOnly>

   <RecordCalls>false</RecordCalls>

   <TemplateFilename>snom.ph.xml</TemplateFilename>

   <ProvisioningFilename2>Snom 720</ProvisioningFilename2>

   <MAC>121212ABABAB</MAC>

   <Codecs>

      <codec>G711u</codec>

      <codec>G711a</codec>

      <codec>G722</codec>

      <codec>G729</codec>

   </Codecs>

   <Language>English</Language>

   <ProvisionType>LocalLan</ProvisionType>

   <AllowOwnRecordings>false</AllowOwnRecordings>

</extension>

Creating a SIP Trunk, DIDs and Inbound rules

To automatically create a SIP trunk, as well as its DIDs and inbound rules, add the relevant info in a <siptrunk> node based on this XML example excerpt:

<siptrunk>

   <Name>Voip Trunk 1</Name>

   <TemplateFilename>GenericSIPTrunk.pv.xml</TemplateFilename>

   <Host>trunk.example.com</Host>

   <Port>5050</Port>

   <ProxyHost>proxy.trunk.example.com</ProxyHost>

   <ProxyPort>5160</ProxyPort>

   <SimultaneousCalls>10</SimultaneousCalls>

   <RequireRegistrationFor>InOutCalls</RequireRegistrationFor>

   <AuthID>369456456456</AuthID>

   <AuthPassword>sgh88DMVU6Uz60MQzwvF</AuthPassword>

   <Use3WayAuth>true</Use3WayAuth>

   <SeparateAuthPassword>3WayPass</SeparateAuthPassword>

   <ExternalNumber>0044800012345100</ExternalNumber>

   <OfficeHoursDestinationType>Extension</OfficeHoursDestinationType>

   <OfficeHoursDestination>100</OfficeHoursDestination>

   <OutOfOfficeHoursDestinationType>Extension</OutOfOfficeHoursDestinationType>

   <OutOfOfficeHoursDestination>100</OutOfOfficeHoursDestination>

   <DIDNumbers>0044800012345101,0044800012345102</DIDNumbers>

   <OutboundCallerID>0044800012345100</OutboundCallerID>

   <Direction>Both</Direction>

   <DeliverAudio>true</DeliverAudio>

   <DisableVideoCalls>true</DisableVideoCalls>

   <SupportReinvite>false</SupportReinvite>

   <SupportReplaces>false</SupportReplaces>

   <PublicIpInSipViaHeader>1.2.3.4</PublicIpInSipViaHeader>

   <EnableSRTP>false</EnableSRTP>

   <TimeBetweenReg>120</TimeBetweenReg>

   <IPInRegistrationContact>Default</IPInRegistrationContact>

   <SpecifiedIPForRegistrationContact></SpecifiedIPForRegistrationContact>

   <AlternativeProxy></AlternativeProxy>

   <TransportProtocol></TransportProtocol>

   <IPMode></IPMode>

   <Codecs>

      <codec>PCMU</codec>

      <codec>GSM</codec>

      <codec>iLBC</codec>

      <codec>G722</codec>

      <codec>opus</codec>

      <codec>G729</codec>

      <codec>PCMA</codec>

      <codec>Speex</codec>

   </Codecs>

   <InboundRules>

      <InboundRule>

         <Name>IncomingCall1</Name>

         <DID>0044800012345101</DID>

         <OfficeHoursDestinationType>Extension</OfficeHoursDestinationType>

         <OfficeHoursDestination>101</OfficeHoursDestination>

         <OutOfOfficeHoursDestinationType>Extension</OutOfOfficeHoursDestinationType>

         <OutOfOfficeHoursDestination>101</OutOfOfficeHoursDestination>

       </InboundRule>

   </InboundRules>

</siptrunk>

Creating Outbound Rules with Backup Routes

In the <OutboundRules> section, you can add <OutboundRule> nodes to automatically create outbound rules and backup routes via your setupconfig.xml:

<OutboundRules>

   <OutboundRule>

      <Name>Outbound Rule 1</Name>

      <Prefix>111</Prefix>

      <DNRanges>

         <DNRange>

            <To>000</To>

            <From>000</From>

         </DNRange>

         <DNRange>

            <To>100</To>

            <From>105</From>

         </DNRange>

      </DNRanges>

      <NumberLengthRanges>9,10,11</NumberLengthRanges>

      <DNGroups>

         <Group>Sales</Group>

         <Group>CEO</Group>

      </DNGroups>

      <OutboundRoutes>

         <OutboundRoute>

            <Gateway>GatewayIn</Gateway>

            <StripDigits>0</StripDigits>

            <Prepend>807</Prepend>

         </OutboundRoute>

         <OutboundRoute>

            <Gateway>Trunk1a</Gateway>

            <StripDigits>1</StripDigits>

            <Prepend>801</Prepend>

         </OutboundRoute>

      </OutboundRoutes>

   </OutboundRule>

</OutboundRules>

Importing SSL Certificates

To include SSL certificate information in your setupconfig.xml, use the below example to configure the parts relevant to SSL:

<option>

        <code>NeedFqdn</code>

        <answer>no</answer>

        <!--  enter yes to get a 3CX FQDN. enter no to use your fqdn (custom domains) -->

</option>

<option>

        <code>FullExternalFqdn</code>

        <!-- This should be populated if NeedFqdn = no.  -->

        <answer>demo.3cx-example.com</answer>

        <!-- User selected needfqdn = no. This means you have an fqdn so enter your fully qualified domain here example demo.3cx-example.com -->

</option>

<option>

        <code>CertificatePath</code>

        <!-- Use if NeedFqdn = no.  -->

        <answer>

-----BEGIN PUBLIC KEY-----

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAloremipsumdolorsita

...

cepteurSintoccaecatcupidatatnonproidentsuntinculpaquiofficiaDese

runtmollitanimidestlaborumQwIDAQAB

-----END PUBLIC KEY-----                

</answer>

        <!-- This is the certificate file (PFX, CRT, CER, PEM) which can be either a path, http link or just copy and paste the whole contents of the certificate - Including the BEGIN certificate part -->

</option>

<option>

        <code>CertificatePassword</code>

        <!-- Use if NeedFqdn = no.  -->

        <answer/>

        <!-- This is the PFX certificate password. Shows only when you select a pfx file -->

</option>

<option>

        <code>CertificateKey</code>

        <!-- Use if NeedFqdn = no.  -->

        <answer>

-----BEGIN RSA PRIVATE KEY-----

MIIEowIBAAKCAQEAloremipsumdolorsitametconsecteturadipiscingelits

eddoeiusmodtemporincididuntutlaboreetdoloremagnamaliquautenimadm

...

inreprehenderitinvoluptatevelitEsSecillumdoloreEufugiatnullapari

aturExcepteurSintoccaecatcupidaTatnonproidentsuntinculpaquioffic

iadeseruntmollitanimidestlaboruM==

-----END RSA PRIVATE KEY-----                

</answer>

        <!-- This is the certificate key which can be either a path, http link or it can be the whole contents of the pem file. Including the BEGIN part. Applies to PEM Certs -->

</option>

<option>

        <code>CertificateKeyPasswordRequest</code>

        <!-- Use if NeedFqdn = no.  -->

        <answer/>

        <!--  It could be that the pem (CRT, CER, PEM) file is encrypted, so without the key, setupconfig will download the file but will not be able to decrypt it unless we enter the password request key here. -->

</option>

📄 Note: Different types of certificates require different XML nodes to be configured. Though CertificatePath is used in all, CertificatePassword is used only for pfx.

New Installation vs Restoring a Backup

To create a fresh 3CX installation, just set InstallationType=new and provide your Licence Key as shown below.

<tcxinit>

<option>

        <code>InstallationType</code>

        <answer>new</answer>

</option>

<option>

        <code>LicenseKey</code>

        <answer>0000-1111-3333-4444</answer>

</option>

</tcxinit>

In case you want to restore an existing backup via setupconfig.xml, set InstallationType=restore and provide the path to your backup file in BackupFile code.

Note: It can be an actual physical path on the local machine or an http link. In case your backup is encrypted, enter the backup password in the answer of BackupPassword code.

<tcxinit>

      <option>

            <code>InstallationType</code>

            <answer>restore</answer>    

      </option>

      <option>

            <code>LicenseKey</code>

            <answer>0000-1111-3333-4444</answer>

      </option>

      <option>

             <code>BackupFile</code>

             <answer>/var/tmp/mybackup.zip</answer>    

      </option>

      <option>

            <code>BackupPassword</code>

            <answer>a0Jdtz9Jea0Dj3jk</answer>

      </option>

</tcxinit>

Setting Up the System Owner and Credentials

When configuring the xml, you’ll need to provide a list of extensions for your system. The first extension you configure will be assigned the System Owner Role.

<extensions>

<extension>

   <Number>100</Number>

   <FirstName>John</FirstName>

   <LastName>Smith</LastName>

   <EmailAddress>[email protected]</EmailAddress>

   ...

   <CustomParameters>

     <CustomParameter>

       <Name>SERVICES_ACCESS_HASH</Name>

       <Value>AAAAAMAnCQAQAAAAAQ92DLZ6nqkahROS…KHRMtydHb8BsLA==</Value>

       <ParameterType>String</ParameterType>

       <Create>true</Create>

     </CustomParameter>

   </CustomParameters>

</extension>

<extension>

   <Number>101</Number>

   <FirstName>Joanne</FirstName>

   <LastName>Davis</LastName>

   <EmailAddress>[email protected]</EmailAddress>

   ...

</extension>

...

<extensions>

Configuring your PBX Ports

Specify the ports that your PBX will use for HTTPS, HTTP, SIP and the 3CX tunnel in the following fields.

<tcxinit>

<option>

      <code>HttpsPort</code>

      <answer>443</answer>

 </option>

 <option>

      <code>HttpPort</code>

      <answer>80</answer>

 </option>

 <option>

      <code>SipPort</code>

      <answer>5060</answer>

 </option>

 <option>

      <code>TunnelPort</code>

      <answer>5090</answer>

 </option>

</tcxinit>

Setting Up your Mail Server

To configure your PBX to use the 3CX SMTP server to send emails, set the following code in your xml:

<tcxinit>

<option>

      <code>MailServerType</code>

      <answer>3CX</answer>

</option>

</tcxinit>

To configure your PBX to use the Custom SMTP server to send emails, set the following code in your xml:

<tcxinit>

<option>

        <code>MailServerType</code>

        <answer>Custom</answer>

</option>

<option>

        <code>MailServerAddress</code>

        <answer>my-smtp.example.com</answer>

</option>

<option>

        <code>MailServerReplyTo</code>

        <answer>[email protected]</answer>

</option>

<option>

        <code>MailServerUserName</code>

        <answer>mySMTPUsername</answer>

</option>

<option>

        <code>MailServerPassword</code>

        <answer>mySMTPPassword</answer>

</option>

<option>

        <code>MailServerEnableSslTls</code>

        <answer>[yes|no]</answer>

</option>

</tcxinit>

Public IP Configuration

The following code controls the configuration of the public IP of your PBX. Public IP code can be set to either auto for the PBX to auto-detect your public IP, or to manual if you want to manually configure the public IP of your PBX.

If you select manual, the ManualPublicIP code must then be populated with your PBX public IP as shown below, otherwise skip this code. For StaticOrDynamicIP code must be set to either static or dynamic.

Set to static in case you have a static IP address from your provider where it never changes.

Otherwise, set to dynamic so the PBX will periodically check for IP changes and adjust configuration and DNS records accordingly.

<tcxinit>

<option>

        <code>PublicIP</code>

        <answer>[auto|manual]</answer>

</option>

<option>

        <code>ManualPublicIP</code>

        <answer>X.X.X>X</answer>

</option>

<option>

        <code>StaticOrDynamicIP</code>

        <answer>[static|dynamic]</answer>

</option>

</tcxinit>

Local IP Configuration

The following code controls the configuration of your local interface/IP used by your PBX LocalIP code can be set to auto or manual.

If set to auto, the PBX will automatically take the first IP on the machine’s network stack. Note that in case your machine is not behind a NAT then the public IP will be taken.

In case your machine has multiple nic. adapters, you can set LocalIP to manual and populate the ManualLocalIP code with the local IP Address that you want your PBX to use.

Otherwise, skip this code.

<tcxinit>

<option>

        <code>LocalIP</code>

        <answer>[auto|manual]</answer>

        </option>

<option>

        <code>ManualLocalIP</code>

        <answer>192.168.0.10</answer>

</option>

</tcxinit>

Using 3CX FQDNs

To configure your PBX to use 3CX FQDNs you need to use the following codes in the setupconfig.xml. Set NeedFqdn to yes to allow the PBX to create your chosen 3CX FQDN, certificates and DNS records. Only set to no if you plan to use your own custom FQDNs where you’ll need to upload your own custom certificates and manage your own DNS records.

Hostname must be populated with the preferred hostname of your FQDN. For example, it can be your company name. You should skip this if you set NeedFqdn to no, DomainGroup and DnsSuffix control the domain name to be used for your FQDN.

For example, the following configuration will install the PBX using example.3cx.eu as the FQDN.

<tcxinit>

<option>

        <code>NeedFqdn</code>

        <answer>[yes|no]</answer>

</option>

<option>

        <code>Hostname</code>

        <answer>example</answer>

</option>

<option>

        <code>DomainGroup</code>

        <answer>Europe</answer>

</option>

<option>

        <code>DnsSuffix</code>

        <answer>eu</answer>

</option>

</tcxinit>

Available Domain Group: Africa, Asia, Cities, Continent, Europe, Oceania, Other, South America, United States.

A list of all available suffixes per Domain Group that can be used when creating 3CX FQDNs can be found here.

Configuring a Different Local FQDN

By default, the PBX is installed in split DNS mode where, if the network is configured correctly, the 3CX FQDN must be fully resolvable on the LAN as well as outside of the LAN. This means your own DNS server or a firewall should be able to do hairpin nat.

In case you have a managed DNS, there is also the option to configure a different local FQDN to be used by local parties. 

To do so you will need to set HasLocalDns code to yes and InternalFqdn code to your local internal FQDN.

<tcxinit>

<option>

        <code>HasLocalDns</code>

        <answer>yes</answer>

</option>

<option>

        <code>InternalFqdn</code>

        <answer>PBX_FQDN</answer>

</option>

</tcxinit>

Setting Up your PBX Language, Country, Time Zone and Prompt Sets

Language code controls the Language of the PBX (used for welcome emails, reports, etc.).

Prompt Set code controls the prompt set to be used in Voicemail Menus, IVRs, Queues, etc.

Country code is used for allowing calls to your country and for E164 Formatting. Timezone code controls the timezone used by the PBX.

<tcxinit>

<option>

        <code>Language</code>

        <answer>UK</answer>

</option>

<option>

        <code>Promptset</code>

        <answer>English</answer>

</option>

<option>

<code>Country</code>

<answer>United States</answer>

</option>

<option>

<code>Timezone</code>

<answer>9</answer>

</option>

</tcxinit>

The available languages that can be used for the PBX are the following:

  • EN = English (US)
  • UK = English (UK)
  • DE = German
  • FR = French
  • ES = Spanish
  • IT = Italian
  • PT = Portuguese
  • RU = Russian
  • PL = Polish
  • ZH = Chinese

The available prompt sets that can be used can be found here

The available Countries and timezone codes that can be used can be found here

Whitelist/Blacklist of IPs

You can use the following example in your setupconfig.xml to whitelist/blacklist a single IP or a range of IPs / subnet.

Notice that the parent element of <IpBlackList> is the <SetupConfig>.

You can use Mask to declare a single IP Address (255.255.255.255) or to declare a whole subnet (eg. 255.255.0.0).

Set Allowed to true to whitelist the IP address or set to false to blacklist it.

<SetupConfig>

        <IpBlackList>

                <IpBlackListEntry>

                        <Address>1.2.3.4</Address>

                        <Mask>255.255.255.255</Mask>

                        <Allowed>true</Allowed>

                        <Description>Single IP Allowed</Description>

                </IpBlackListEntry>

                <IpBlackListEntry>

                        <Address>1.2.0.0</Address>

                        <Mask>255.255.0.0</Mask>

                        <Allowed>false</Allowed>

                        <Description>Range of IPs Denied</Description>

                </IpBlackListEntry>

        </IpBlackList>

</SetupConfig>

Configuring Countries for Outbound Calls

You can use NOTALLOWED_COUNTRYCODES custom parameter in your setupconfig.xml to specify to which countries the PBX should allow outbound calls to be made to or not.

Note that the parent element of <CustomParameters> is the <SetupConfig>.

<CustomParameters>

        <CustomParameter>

                <Name>NOTALLOWED_COUNTRYCODES</Name>

                <Value></Value>

                <ParameterType>String</ParameterType>

                <Description>Specifies the country codes which are not allowed for outbound calls</Description>

                <Create>true</Create>

        </CustomParameter>

</CustomParameters>

Note that the value in the xml above holds the codes of the NOT ALLOWED countries. So in the example above where <value> is empty, outbound calls will be allowed to ALL countries.

In certain cases, it’s more useful to allow outbound calls to specific countries only. In this case, the following example can be used, where all available country codes are included. Just make sure to only remove the codes of the countries that you actually want to allow outbound calls to be made to.

<CustomParameters>

        <CustomParameter>

                <Name>NOTALLOWED_COUNTRYCODES</Name>

                <Value>001,001264,001268,001242,001246,001441,001345,00506,0053,001767,001809,001829,001849,00503,00299,001473,001671,00502,00509,00504,001876,001658,0052,001664,00505,001670,00507,001787,001939,001869,001758,001784,001868,001649,001284,001340,001721,0054,00297,00501,00591,0055,0056,0057,00593,00500,00594,00590,00592,00596,00595,0051,00508,00597,00598,0058,005993,005994,005995,005996,005997,005998,005999,00355,00376,00374,0043,00375,0032,00387,00359,00385,00357,00420,0045,00372,00298,00358,0033,0049,00350,0030,00441481,0036,00354,00353,00441624,0039,00441534,00371,00423,00370,00352,00389,00356,00373,00377,00382,0031,0047,0048,00351,0040,00378,00381,00383,00421,00386,0034,004779,0046,0041,0090,0090392,00380,0044,003906698,00971,0093,00994,00973,00880,00975,00673,00855,0086,00670,00995,00852,0091,0062,0098,00964,00972,0081,00962,00965,00996,00856,00961,00853,0060,00960,00976,0095,00977,00850,00968,0092,00970,0063,00974,007,00966,0065,0082,0094,00963,00886,00992,0066,00993,00998,0084,00967,00213,00244,00247,00229,00267,00246,00226,00257,00237,00238,00236,00235,00269,00242,00243,00225,00253,0020,00240,00291,00251,00241,00220,00233,00224,00245,00254,00266,00231,00218,00261,00265,00223,00222,00230,00262269,00269639,00212,00258,00264,00227,00234,00262,00250,00290,00239,00221,00248,00232,00252,0027,00211,00249,00268,00255,00228,002908,00216,00256,00260,0025524,00263,001684,0061,006189162,00682,00679,00689,00686,00692,00691,00674,00687,0064,00683,00672,00680,00675,00872,00685,00677,00690,00676,00688,00699,00678,00681,00870,00871,00873,00874,00875,00876,00877,00878,00879,00881,00882,00883,00979,00800,00808,00888,00991,00999,+1,+1264,+1268,+1242,+1246,+1441,+1345,+506,+53,+1767,+1809,+1829,+1849,+503,+299,+1473,+1671,+502,+509,+504,+1876,+1658,+52,+1664,+505,+1670,+507,+1787,+1939,+1869,+1758,+1784,+1868,+1649,+1284,+1340,+1721,+54,+297,+501,+591,+55,+56,+57,+593,+500,+594,+590,+592,+596,+595,+51,+508,+597,+598,+58,+5993,+5994,+5995,+5996,+5997,+5998,+5999,+355,+376,+374,+43,+375,+32,+387,+359,+385,+357,+420,+45,+372,+298,+358,+33,+49,+350,+30,+441481,+36,+354,+353,+441624,+39,+441534,+371,+423,+370,+352,+389,+356,+373,+377,+382,+31,+47,+48,+351,+40,+378,+381,+383,+421,+386,+34,+4779,+46,+41,+90,+90392,+380,+44,+3906698,+971,+93,+994,+973,+880,+975,+673,+855,+86,+670,+995,+852,+91,+62,+98,+964,+972,+81,+962,+965,+996,+856,+961,+853,+60,+960,+976,+95,+977,+850,+968,+92,+970,+63,+974,+7,+966,+65,+82,+94,+963,+886,+992,+66,+993,+998,+84,+967,+213,+244,+247,+229,+267,+246,+226,+257,+237,+238,+236,+235,+269,+242,+243,+225,+253,+20,+240,+291,+251,+241,+220,+233,+224,+245,+254,+266,+231,+218,+261,+265,+223,+222,+230,+262269,+269639,+212,+258,+264,+227,+234,+262,+250,+290,+239,+221,+248,+232,+252,+27,+211,+249,+268,+255,+228,+2908,+216,+256,+260,+25524,+263,+1684,+61,+6189162,+682,+679,+689,+686,+692,+691,+674,+687,+64,+683,+672,+680,+675,+872,+685,+677,+690,+676,+688,+699,+678,+681,+870,+871,+873,+874,+875,+876,+877,+878,+879,+881,+882,+883,+979,+800,+808,+888,+991,+999</Value>

                <ParameterType>String</ParameterType>

                <Description>Specifies the country codes which are not allowed for outbound calls</Description>

                <Create>true</Create>

        </CustomParameter>

</CustomParameters>

See also

Last Updated

This document was last updated on 31 July 2026

https://www.3cx.com/docs/configure-pbx-automatically/